/*
 * @Author: candy
 * @Date:   2017-09-20 13:08:56
 * @Last Modified by:   candy
 * @Last Modified time: 2017-10-02 11:00:12
 */
 var _ = require('lodash');
var path = require('path');
var webpack = require('webpack');
var ExtractTextPlugin = require("extract-text-webpack-plugin"); //extract-text-webpack-plugin
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ejsLoader = require("ejs-loader");

var getHtmlConfig = function(name,title) {
    return {
        template: './src/view/'+name+'.html', //html模板路径
        filename: 'view/'+name+'.html', //生成的html存放路径，相对于 path
        title:title,
        inject: true, //允许插件修改哪些内容，包括head与body
        hash: true, //为静态资源生成hash值
        chunks: ['common', name] //chunks 默认会在生成的 html 文件中引用所有的 js 文件，只引用了common和login.js。
    }
}
var config = {
    entry: {
        common: ['./src/page/common/index.js'],
        index: __dirname + "/src/page/index/index.js",
        list: __dirname + "/src/page/list/index.js",
        login: [__dirname + "/src/page/login/index.js"],
        regist: [__dirname + "/src/page/regist/index.js"]
    }, //文件入口
    output: {
        path: __dirname + "/dist", //文件打包后路径 
        filename: "js/[name].js",//打包后文件名字
        publicPath:"../" //服务器端
        //publicPath: "/dist" //本地打包
    },
    externals: { //加载jquery
        'jquery': 'window.jQuery'
    },
    module: {
        loaders: [
            //{test:/\.css$/,loader:'style-loader!css-loader'}
            {
                test: /\.css$/,
                loader: ExtractTextPlugin.extract('css-loader')
            }, //提取独立css
            {
                test: /\.tpl$/, 
                loader: 'ejs-loader'
            },
            // {
            //     test: /\.html$/,
            //     loader: "html-loader"
            // },
            // {
            //     test: /\.string$/, 
            //     loader: 'html-loader',
            //     query : {
            //         minimize : true,
            //         removeAttributeQuotes : false
            //     }
            // },
            {
                test:/\.(gif|png|jpg|woff|svg|eot|ttf)\??.*$/,//图片处理
                loader: 'url-loader?limit=8192&name=images/[hash:8].[name].[ext]', //如果图片大小大于8192就转换成base64,否则生成相应图片
                //options:{ publicPath:'../'}
            }
        ],
    },
    resolve : {
        alias : { //配置过后可以在js里面直接引入譬如 var mm = require('util/mm.js');
            node_modules    : __dirname + '/node_modules',
            util            : __dirname + '/src/util',
            page            : __dirname + '/src/page',
            service         : __dirname + '/src/service',
            image           : __dirname + '/src/image'
        }
    },
    plugins: [
        // new webpack.ProvidePlugin({
        //     _: "underscore"
        // }),
        new webpack.optimize.CommonsChunkPlugin({ //提取公共模块
            name: 'common', //公共js名  common:['./src/page/common/index.js']
            filename: 'js/base.js' //后面所有的路径都是基于output里面的path路径
        }),
        new ExtractTextPlugin("css/[name].css"), //单独使用style标签加载css并设置其路径
        new HtmlWebpackPlugin(getHtmlConfig('index',"首页11")), //index.html模板
        new HtmlWebpackPlugin(getHtmlConfig('list',"产品列表")), //list.html模板
        new HtmlWebpackPlugin(getHtmlConfig('login','登录')), //login.html模板
        new HtmlWebpackPlugin(getHtmlConfig('regist','注册')), //login.html模板
        new webpack.HotModuleReplacementPlugin(),
        // new HtmlWebpackPlugin({ //index.html模板的处理
        //     template: './src/view/index.html', //html模板路径
        //     filename: 'view/index.html', //生成的html存放路径，相对于 path
        //     inject: true, //允许插件修改哪些内容，包括head与body
        //     hash: true, //为静态资源生成hash值
        //     chunks: ['common', 'index']//chunks 默认会在生成的 html 文件中引用所有的 js 文件，只引用了common和login.js。
        // }),
        // new HtmlWebpackPlugin({ //login.html模板的处理
        //     template: './src/view/login.html', //html模板路径
        //     filename: 'view/login.html', //生成的html存放路径，相对于 path
        //     inject: true, //允许插件修改哪些内容，包括head与body
        //     hash: true, //为静态资源生成hash值
        //     chunks:['common','login']//
        // })
    ],
    //https://github.com/fengnovo/diary/tree/master/react/20161021/webpack-dev-server-proxy-test
    devServer: {
        publicPath: "/dist",
        //headers: { "X-Custom-Header": "yes" },
        stats: { colors: true },
        historyApiFallback: true,
        hot: false,
        inline: true,
        proxy: {
            '**': {
                target: 'http://happymmall.com',
                changeOrigin: true,
                pathRewrite: {'^/api': ''}
            },
            '/list': {
              target: 'http://happymmall.com',
              pathRewrite: {'^/list.do' : 'product/list.do'},
              changeOrigin: true
            }
         }
    },
};
module.exports = config;